]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
messageTray: only update an icon when necessary on notification update
authorMarina Zhurakhinskaya <marinaz@redhat.com>
Wed, 21 Sep 2011 20:47:49 +0000 (16:47 -0400)
committerMarina Zhurakhinskaya <marinaz@redhat.com>
Thu, 22 Sep 2011 17:25:35 +0000 (13:25 -0400)
This avoids unnecessarily removing and resetting the icon in the notifications.

This fixes the new chat notification sliding down and up slightly when new
messages are received.

https://bugzilla.gnome.org/show_bug.cgi?id=659768

js/ui/messageTray.js

index d41fd7dc5300a4ccbbe00aa180d0803f23a54068..cf149ead8d104d02264378e145f15ba8738d9b7e 100644 (file)
@@ -504,8 +504,11 @@ Notification.prototype = {
 
         let oldFocus = global.stage.key_focus;
 
-        if (this._icon)
+        if (this._icon && (params.icon || params.clear)) {
             this._icon.destroy();
+            this._icon = null;
+        }
+
         // We always clear the content area if we don't have custom
         // content because it might contain the @banner that didn't
         // fit in the banner mode.
@@ -531,13 +534,15 @@ Notification.prototype = {
         if (!this._scrollArea && !this._actionArea && !this._imageBin)
             this._table.remove_style_class_name('multi-line-notification');
 
-        this._icon = params.icon || this.source.createNotificationIcon();
-        this._table.add(this._icon, { row: 0,
-                                      col: 0,
-                                      x_expand: false,
-                                      y_expand: false,
-                                      y_fill: false,
-                                      y_align: St.Align.START });
+        if (!this._icon) {
+            this._icon = params.icon || this.source.createNotificationIcon();
+            this._table.add(this._icon, { row: 0,
+                                          col: 0,
+                                          x_expand: false,
+                                          y_expand: false,
+                                          y_fill: false,
+                                          y_align: St.Align.START });
+        }
 
         this.title = title;
         title = title ? _fixMarkup(title.replace(/\n/g, ' '), params.titleMarkup) : '';